#ifndef QUEUE_NETWORK_H
#define QUEUE_NETWORK_H

#include <QVector>
#include <QString>
#include <QDebug>

// 节点类，表示景点
class Node {
public:
    QString name;
    double arrivalRate;  // 到达率 λ
    double serviceRate;  // 服务率 μ
    double queueLength;  // 队列长度

    Node(const QString& name, double serviceRate);
};

// 排队网络类，处理整个景区的队列网络
class QueueNetwork {
public:
    QVector<Node> nodes;  // 所有节点
    QVector<QVector<double>> interestMatrix;  // 景点之间的兴趣矩阵

    QueueNetwork(const QVector<QVector<double>>& interestMatrix, const QVector<QString>& locations,double initarrivalrate);

    void calculateTraffic();  // 计算到达率
    void calculateQueueMetrics();  // 计算队列长度等指标
    void displayResults();  // 显示结果
    QVector<double> returnLength();

private:
    QVector<QVector<double>> normalizeInterestMatrix(const QVector<QVector<double>>& matrix);  // 归一化兴趣矩阵
};

#endif // QUEUE_NETWORK_H
